﻿(function() {
  function init() {

    function setText(elem, text) {
      if (! elem.firstChild) {
        elem.appendChild(document.createTextNode(""));
      }
      elem.firstChild.data = text;
    }

    function run() {
      var num = parseInt(document.getElementById("num").value, 10);

      // 計算を行うワーカーを生成
      var worker = new Worker("../sample-webworkers/worker.js");

      // ワーカーから結果を受け取る
      worker.onmessage = function(event) {
        if (event.data.isDone) {
          // 計算が完了した場合
          var retElem = document.getElementById("result");
          setText(retElem, event.data.value.toString());
        } else {
          // 計算が完了していない場合
          var progressElem = document.getElementById("progress");
          setText(progressElem, event.data.value.toString());
        }
      };

      // ワーカーに計算させる
      worker.postMessage(num);
    }

    document.getElementById("run").
      attachEvent('onclick', run);
  }

  window.attachEvent('onload', init);
})();